A high-speed network has spread, and performances of a communication device and a storage device loaded on each of a server device and a terminal device are improving. Accompanying that, it has become popular to download a file stored in the storage device on the server device to the storage device on the terminal device and to upload a file stored in the storage device on the terminal device to the storage device on the server device.
An HDD (Hard Disk Drive) and an SSD (Solid State Drive) are called a DAS (Direct Attached Storage) and are often used in a device for a server use. Also, a storage device utilizing a flash memory such as an SD card or an eMMC is often used in a mobile device such as a smartphone, a notebook PC, or a tablet terminal. For the storage device for the server use, there are current products that generate a write rate exceeding 3 Gbps alone because of striping processing (parallelization) of an RAID of the HDD and improvement of an SSD transfer performance in recent years. Also for the storage device for a built-in terminal, there is an SD card of an UHS-I standard that generates the write rate exceeding 480 Mbps, and specification development of a standard having the performance of a several Gbps class has been also completed.
For communication means of these server devices and terminal devices, Ethernet (R), 802.11a/b/g/n/ac or the like is used. For a communication protocol, TCP/IP, UDP/IP or the like that is widely used in the Internet or the like is used. For Ethernet, 1 Gbps is mainly used at present, and 10 Gbps has begun to be used in a data center or the like. Also, the specification development of 40 Gbps/100 Gbps Ethernet of the next generation has been completed. It is assumed that utilization of several 100 Mbps to several Gbps is to surely spread from now on in 802.11 as well.
Considering these, storage device access through a network is expected to be a band of a class of several 100 Gbps to several 10 Gbps for a server use and several 10 Gbps to several Gbps for a terminal use.
Accompanying such performance improvement of the network and the storage device, processing loads of a host CPU that controls them also increase. Conventionally, the problem has been tried to be solved by a technology called a TCP/IP offload engine (TOE, hereinafter). The TOE is an exclusive processor or an exclusive circuit that performs processing of the TCP-IP in place of the host CPU, and offloads TCP/IP processing loads from the host CPU. By using the TOE, the TCP/IP processing can be performed at a higher speed than communication protocol processing by conventional software, and the performance of the network can be improved.
The storage device and the TOE are controlled by the host CPU respectively, and data is assumed to be inputted and outputted through a main memory. Therefore, in the case of writing the data received from the network to the storage device, the data is transferred between the TOE and the storage device (SSD, HDD, SD card, eMMC, or the like) surely through the main memory.
Also, there is a case that a copy of transfer data is generated for some times on the main memory by application software that is operated on the host CPU and bridges them or delivery processing of the data between a kernel space and a user space of an OS or the like. Further, file system processing is also needed, and the data managed in a block size in implementation of a normal file system needs to be read and written in units of a sector of a fixed byte length from the storage device and shaped as a file of an arbitrary byte length. Therefore, the copy of the data is generated here, too.
As described above, for data transfer between the storage device and the TOE, since software processing of the host CPU is interposed, read/write to the main memory is needed at least once. Also, by the processing of the OS, the application and the file system, on the main memory, memory copy is generated for a plurality of times in some cases. Because of these, loads of the main memory greatly increase.
Such memory loads have been coped with conventionally by preparing the host CPU having a sufficient processing performance and a high-speed main memory, however, in consideration of the improvement of a transfer rate reaching several Gbps to 100 Gbps for a network storage device in recent years, it has become a problem in no small way.
Particularly, in order to improve performance characteristics of the main memory, upgrade of the host CPU is generally involved, and problems of costs and power consumption are particularly noticeable.